﻿ 


//using log4net;
//using log4net.Config;
//using System;
//using System.Collections.Generic;
//using System.IO;

//namespace LingDingSoft
//{
//    /// <summary>
//    /// Log4Net帮助类，默认静态构造函数内注册<see cref="DefaultCustomConfigFileRelPath"/> 里的配置，需要引用<see cref="log4net"/>
//    /// </summary>
//    public static class LogHelper
//    {
//        static LogHelper()
//        {
//            InitConfig();
//        }
//        public static readonly string DefaultLogName = "DefaultLog";

//        private static readonly IDictionary<string, ILog> dict = new Dictionary<string, ILog>();

//        /// <summary>
//        /// Log4Net默认配置文件Log4Net.config的相对路径: App_DataEx\Log4Net\Log4Net.config
//        /// </summary>
//        public static readonly string DefaultCustomConfigFileRelPath = "App_DataEx\\Log4Net\\Log4Net.config";

//        /// <summary>
//        /// 取配置文件<see cref="DefaultCustomConfigFileRelPath"/>中的默认的Log对象<see cref="DefaultLogName"/>
//        /// </summary>
//        public static ILog Log
//        {
//            get
//            {
//                return GetLogger(DefaultLogName);
//            }
//        }
//        /// <summary>
//        /// 取配置文件<see cref="DefaultCustomConfigFileRelPath"/>中的ExceptionLog对象
//        /// </summary>
//        public static ILog ExceptionLog
//        {
//            get
//            {
//                return GetLogger("ExceptionLog");
//            }
//        }
//        /// <summary>
//        /// 取配置文件<see cref="DefaultCustomConfigFileRelPath"/>中的BizLog对象
//        /// </summary>
//        public static ILog BizLog
//        {
//            get
//            {
//                return GetLogger("BizLog");
//            }
//        }
//        /// <summary>
//        /// 取配置文件<see cref="DefaultCustomConfigFileRelPath"/>中的DBLog对象
//        /// </summary>
//        public static ILog DBLog
//        {
//            get
//            {
//                return GetLogger("DBLog");
//            }
//        }
//        /// <summary>
//        /// 根据pLoggerName取得Log对象，pLoggerName值不存在，则会自动使用<see cref="DefaultLogName"/>
//        /// </summary>
//        /// <param name="pLoggerName">配置文件中的Log的Name值</param>
//        /// <returns>Log对象</returns>
//        public static ILog GetLogger(string pLoggerName)
//        {
//            ILog log = null;

//            if (string.IsNullOrEmpty( pLoggerName))
//            {
//                pLoggerName = DefaultLogName;
//            }

//            if (dict.ContainsKey(pLoggerName))
//            {
//                return dict[pLoggerName];
//            }

//            log = LogManager.GetLogger(pLoggerName);
//            if (log == null)
//            {
//                log = LogManager.GetLogger(DefaultLogName);
//            }

//            if (log != null)
//            {
//                dict[pLoggerName] = log;
//            }

//            return log;


//        }

//        /// <summary>
//        /// 初始化 Log4Net 的配置文件 
//        /// </summary>
//        /// <param name="pIsDefaultConfig">是否使用默认配置文件<see cref="DefaultCustomConfigFileRelPath"/>，不是，则从标准配置文件app.config或web.config中取</param>
//        public static void InitConfig(bool pIsDefaultConfig = true)
//        {
//            string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_DataEx\\Log4Net\\Log4Net.config");
//            if (pIsDefaultConfig && File.Exists(path))
//            {
//                FileInfo pConfigFileObj = new FileInfo(path);
//                InitCustomConfig(pConfigFileObj);
//            }
//            else
//            {
//                XmlConfigurator.Configure();
//            }
//        }
//        /// <summary>
//		/// 初始化Log4Net的自定义配置文件：传入FileInfo对象
//		/// </summary>
//		/// <param name="pConfigFileObj">FileInfo类型的配置文件对象</param>
//		public static void InitCustomConfig(FileInfo pConfigFileObj)
//        {
//            XmlConfigurator.ConfigureAndWatch(pConfigFileObj);
//        }

//        /// <summary>
//        /// 初始化Log4Net的自定义配置文件：传入配置文件的完全物理路径
//        /// </summary>
//        /// <param name="pCustomFilePath">自定义配置文件的完全物理路径</param>
//        public static void InitCustomConfig(string pCustomFilePath)
//        {
//            FileInfo file = null; 
//            if (File.Exists(pCustomFilePath))
//            {
//                file = new FileInfo(pCustomFilePath);
//                InitCustomConfig(file);
//            }
//        }
//    }
//}
